namespace nwWCF
{
    using System.Collections.Generic;
    using System.ServiceModel;

    /// <summary>
    /// SampleServiceName Interface
    /// </summary>
    [ServiceContract]
	[CyclicReferencesAware(true)]
    public interface ISampleServiceName
    {
		
        #region Categories CRUD Operations

        /// <summary>
        /// Create Category . 
        /// </summary>
        /// <param name="Category">Target Category.</param>
        /// <returns>return Category Id </returns>
        [OperationContract]
        string CreateCategory(nwDAL.Category category);

        /// <summary>
        /// Read Categories.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Categories.</returns>
        [OperationContract]
        List<nwDAL.Category> ReadCategories(int startIndex, int count);

		/// <summary>
        /// Reads Categories.
        /// </summary>
        /// <returns>List of Categories.</returns>
        [OperationContract]
        List<nwDAL.Category> ReadAllCategories();
		
		/// <summary>
        /// Get Categories ID.
        /// </summary>
        /// <returns>Categories ID</returns>
		[OperationContract]
		string GetCategoryObjectId(nwDAL.Category category);
        
		/// <summary>
        /// Read Category.
        /// </summary>
        /// <param name="entityId">Category Id that will be read.</param>
        /// <returns>Target Category.</returns>
        [OperationContract]
        nwDAL.Category ReadCategory(string entityId);

        /// <summary>
        /// Update Category.
        /// </summary>
        /// <param name="category">updated Category .</param>
        /// <returns>Updated Category Id .</returns>
        [OperationContract]
        string UpdateCategory(nwDAL.Category category);

        /// <summary>
        /// Delete Category.
        /// </summary>
        /// <param name="entityId">Target Category Id.</param>
        /// <returns>Deleted Category Id.</returns>
        [OperationContract]
        string DeleteCategoryById(string entityId);
		
		/// <summary>
        /// Delete Category.
        /// </summary>
        /// <param name="entityId">Target Category.</param>
        /// <returns>Deleted Category.</returns>
        [OperationContract]
        string DeleteCategory(nwDAL.Category category);
		
		/// <summary>
        /// Searches the Category.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Category> SearchCategory(nwDAL.Category searchParameters);
        #endregion
		
        #region Customers CRUD Operations

        /// <summary>
        /// Create Customer . 
        /// </summary>
        /// <param name="Customer">Target Customer.</param>
        /// <returns>return Customer Id </returns>
        [OperationContract]
        string CreateCustomer(nwDAL.Customer customer);

        /// <summary>
        /// Read Customers.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Customers.</returns>
        [OperationContract]
        List<nwDAL.Customer> ReadCustomers(int startIndex, int count);

		/// <summary>
        /// Reads Customers.
        /// </summary>
        /// <returns>List of Customers.</returns>
        [OperationContract]
        List<nwDAL.Customer> ReadAllCustomers();
		
		/// <summary>
        /// Get Customers ID.
        /// </summary>
        /// <returns>Customers ID</returns>
		[OperationContract]
		string GetCustomerObjectId(nwDAL.Customer customer);
        
		/// <summary>
        /// Read Customer.
        /// </summary>
        /// <param name="entityId">Customer Id that will be read.</param>
        /// <returns>Target Customer.</returns>
        [OperationContract]
        nwDAL.Customer ReadCustomer(string entityId);

        /// <summary>
        /// Update Customer.
        /// </summary>
        /// <param name="customer">updated Customer .</param>
        /// <returns>Updated Customer Id .</returns>
        [OperationContract]
        string UpdateCustomer(nwDAL.Customer customer);

        /// <summary>
        /// Delete Customer.
        /// </summary>
        /// <param name="entityId">Target Customer Id.</param>
        /// <returns>Deleted Customer Id.</returns>
        [OperationContract]
        string DeleteCustomerById(string entityId);
		
		/// <summary>
        /// Delete Customer.
        /// </summary>
        /// <param name="entityId">Target Customer.</param>
        /// <returns>Deleted Customer.</returns>
        [OperationContract]
        string DeleteCustomer(nwDAL.Customer customer);
		
		/// <summary>
        /// Searches the Customer.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Customer> SearchCustomer(nwDAL.Customer searchParameters);
        #endregion
		
        #region CustomerCustomerDemos CRUD Operations

        /// <summary>
        /// Create CustomerCustomerDemo . 
        /// </summary>
        /// <param name="CustomerCustomerDemo">Target CustomerCustomerDemo.</param>
        /// <returns>return CustomerCustomerDemo Id </returns>
        [OperationContract]
        string CreateCustomerCustomerDemo(nwDAL.CustomerCustomerDemo customercustomerdemo);

        /// <summary>
        /// Read CustomerCustomerDemos.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of CustomerCustomerDemos.</returns>
        [OperationContract]
        List<nwDAL.CustomerCustomerDemo> ReadCustomerCustomerDemos(int startIndex, int count);

		/// <summary>
        /// Reads CustomerCustomerDemos.
        /// </summary>
        /// <returns>List of CustomerCustomerDemos.</returns>
        [OperationContract]
        List<nwDAL.CustomerCustomerDemo> ReadAllCustomerCustomerDemos();
		
		/// <summary>
        /// Get CustomerCustomerDemos ID.
        /// </summary>
        /// <returns>CustomerCustomerDemos ID</returns>
		[OperationContract]
		string GetCustomerCustomerDemoObjectId(nwDAL.CustomerCustomerDemo customercustomerdemo);
        
		/// <summary>
        /// Read CustomerCustomerDemo.
        /// </summary>
        /// <param name="entityId">CustomerCustomerDemo Id that will be read.</param>
        /// <returns>Target CustomerCustomerDemo.</returns>
        [OperationContract]
        nwDAL.CustomerCustomerDemo ReadCustomerCustomerDemo(string entityId);

        /// <summary>
        /// Update CustomerCustomerDemo.
        /// </summary>
        /// <param name="customercustomerdemo">updated CustomerCustomerDemo .</param>
        /// <returns>Updated CustomerCustomerDemo Id .</returns>
        [OperationContract]
        string UpdateCustomerCustomerDemo(nwDAL.CustomerCustomerDemo customercustomerdemo);

        /// <summary>
        /// Delete CustomerCustomerDemo.
        /// </summary>
        /// <param name="entityId">Target CustomerCustomerDemo Id.</param>
        /// <returns>Deleted CustomerCustomerDemo Id.</returns>
        [OperationContract]
        string DeleteCustomerCustomerDemoById(string entityId);
		
		/// <summary>
        /// Delete CustomerCustomerDemo.
        /// </summary>
        /// <param name="entityId">Target CustomerCustomerDemo.</param>
        /// <returns>Deleted CustomerCustomerDemo.</returns>
        [OperationContract]
        string DeleteCustomerCustomerDemo(nwDAL.CustomerCustomerDemo customercustomerdemo);
		
		/// <summary>
        /// Searches the CustomerCustomerDemo.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.CustomerCustomerDemo> SearchCustomerCustomerDemo(nwDAL.CustomerCustomerDemo searchParameters);
        #endregion
		
        #region CustomerDemographics CRUD Operations

        /// <summary>
        /// Create CustomerDemographic . 
        /// </summary>
        /// <param name="CustomerDemographic">Target CustomerDemographic.</param>
        /// <returns>return CustomerDemographic Id </returns>
        [OperationContract]
        string CreateCustomerDemographic(nwDAL.CustomerDemographic customerdemographic);

        /// <summary>
        /// Read CustomerDemographics.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of CustomerDemographics.</returns>
        [OperationContract]
        List<nwDAL.CustomerDemographic> ReadCustomerDemographics(int startIndex, int count);

		/// <summary>
        /// Reads CustomerDemographics.
        /// </summary>
        /// <returns>List of CustomerDemographics.</returns>
        [OperationContract]
        List<nwDAL.CustomerDemographic> ReadAllCustomerDemographics();
		
		/// <summary>
        /// Get CustomerDemographics ID.
        /// </summary>
        /// <returns>CustomerDemographics ID</returns>
		[OperationContract]
		string GetCustomerDemographicObjectId(nwDAL.CustomerDemographic customerdemographic);
        
		/// <summary>
        /// Read CustomerDemographic.
        /// </summary>
        /// <param name="entityId">CustomerDemographic Id that will be read.</param>
        /// <returns>Target CustomerDemographic.</returns>
        [OperationContract]
        nwDAL.CustomerDemographic ReadCustomerDemographic(string entityId);

        /// <summary>
        /// Update CustomerDemographic.
        /// </summary>
        /// <param name="customerdemographic">updated CustomerDemographic .</param>
        /// <returns>Updated CustomerDemographic Id .</returns>
        [OperationContract]
        string UpdateCustomerDemographic(nwDAL.CustomerDemographic customerdemographic);

        /// <summary>
        /// Delete CustomerDemographic.
        /// </summary>
        /// <param name="entityId">Target CustomerDemographic Id.</param>
        /// <returns>Deleted CustomerDemographic Id.</returns>
        [OperationContract]
        string DeleteCustomerDemographicById(string entityId);
		
		/// <summary>
        /// Delete CustomerDemographic.
        /// </summary>
        /// <param name="entityId">Target CustomerDemographic.</param>
        /// <returns>Deleted CustomerDemographic.</returns>
        [OperationContract]
        string DeleteCustomerDemographic(nwDAL.CustomerDemographic customerdemographic);
		
		/// <summary>
        /// Searches the CustomerDemographic.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.CustomerDemographic> SearchCustomerDemographic(nwDAL.CustomerDemographic searchParameters);
        #endregion
		
        #region Employees CRUD Operations

        /// <summary>
        /// Create Employee . 
        /// </summary>
        /// <param name="Employee">Target Employee.</param>
        /// <returns>return Employee Id </returns>
        [OperationContract]
        string CreateEmployee(nwDAL.Employee employee);

        /// <summary>
        /// Read Employees.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Employees.</returns>
        [OperationContract]
        List<nwDAL.Employee> ReadEmployees(int startIndex, int count);

		/// <summary>
        /// Reads Employees.
        /// </summary>
        /// <returns>List of Employees.</returns>
        [OperationContract]
        List<nwDAL.Employee> ReadAllEmployees();
		
		/// <summary>
        /// Get Employees ID.
        /// </summary>
        /// <returns>Employees ID</returns>
		[OperationContract]
		string GetEmployeeObjectId(nwDAL.Employee employee);
        
		/// <summary>
        /// Read Employee.
        /// </summary>
        /// <param name="entityId">Employee Id that will be read.</param>
        /// <returns>Target Employee.</returns>
        [OperationContract]
        nwDAL.Employee ReadEmployee(string entityId);

        /// <summary>
        /// Update Employee.
        /// </summary>
        /// <param name="employee">updated Employee .</param>
        /// <returns>Updated Employee Id .</returns>
        [OperationContract]
        string UpdateEmployee(nwDAL.Employee employee);

        /// <summary>
        /// Delete Employee.
        /// </summary>
        /// <param name="entityId">Target Employee Id.</param>
        /// <returns>Deleted Employee Id.</returns>
        [OperationContract]
        string DeleteEmployeeById(string entityId);
		
		/// <summary>
        /// Delete Employee.
        /// </summary>
        /// <param name="entityId">Target Employee.</param>
        /// <returns>Deleted Employee.</returns>
        [OperationContract]
        string DeleteEmployee(nwDAL.Employee employee);
		
		/// <summary>
        /// Searches the Employee.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Employee> SearchEmployee(nwDAL.Employee searchParameters);
        #endregion
		
        #region EmployeeTerritories CRUD Operations

        /// <summary>
        /// Create EmployeeTerritory . 
        /// </summary>
        /// <param name="EmployeeTerritory">Target EmployeeTerritory.</param>
        /// <returns>return EmployeeTerritory Id </returns>
        [OperationContract]
        string CreateEmployeeTerritory(nwDAL.EmployeeTerritory employeeterritory);

        /// <summary>
        /// Read EmployeeTerritories.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of EmployeeTerritories.</returns>
        [OperationContract]
        List<nwDAL.EmployeeTerritory> ReadEmployeeTerritories(int startIndex, int count);

		/// <summary>
        /// Reads EmployeeTerritories.
        /// </summary>
        /// <returns>List of EmployeeTerritories.</returns>
        [OperationContract]
        List<nwDAL.EmployeeTerritory> ReadAllEmployeeTerritories();
		
		/// <summary>
        /// Get EmployeeTerritories ID.
        /// </summary>
        /// <returns>EmployeeTerritories ID</returns>
		[OperationContract]
		string GetEmployeeTerritoryObjectId(nwDAL.EmployeeTerritory employeeterritory);
        
		/// <summary>
        /// Read EmployeeTerritory.
        /// </summary>
        /// <param name="entityId">EmployeeTerritory Id that will be read.</param>
        /// <returns>Target EmployeeTerritory.</returns>
        [OperationContract]
        nwDAL.EmployeeTerritory ReadEmployeeTerritory(string entityId);

        /// <summary>
        /// Update EmployeeTerritory.
        /// </summary>
        /// <param name="employeeterritory">updated EmployeeTerritory .</param>
        /// <returns>Updated EmployeeTerritory Id .</returns>
        [OperationContract]
        string UpdateEmployeeTerritory(nwDAL.EmployeeTerritory employeeterritory);

        /// <summary>
        /// Delete EmployeeTerritory.
        /// </summary>
        /// <param name="entityId">Target EmployeeTerritory Id.</param>
        /// <returns>Deleted EmployeeTerritory Id.</returns>
        [OperationContract]
        string DeleteEmployeeTerritoryById(string entityId);
		
		/// <summary>
        /// Delete EmployeeTerritory.
        /// </summary>
        /// <param name="entityId">Target EmployeeTerritory.</param>
        /// <returns>Deleted EmployeeTerritory.</returns>
        [OperationContract]
        string DeleteEmployeeTerritory(nwDAL.EmployeeTerritory employeeterritory);
		
		/// <summary>
        /// Searches the EmployeeTerritory.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.EmployeeTerritory> SearchEmployeeTerritory(nwDAL.EmployeeTerritory searchParameters);
        #endregion
		
        #region Orders CRUD Operations

        /// <summary>
        /// Create Order . 
        /// </summary>
        /// <param name="Order">Target Order.</param>
        /// <returns>return Order Id </returns>
        [OperationContract]
        string CreateOrder(nwDAL.Order order);

        /// <summary>
        /// Read Orders.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Orders.</returns>
        [OperationContract]
        List<nwDAL.Order> ReadOrders(int startIndex, int count);

		/// <summary>
        /// Reads Orders.
        /// </summary>
        /// <returns>List of Orders.</returns>
        [OperationContract]
        List<nwDAL.Order> ReadAllOrders();
		
		/// <summary>
        /// Get Orders ID.
        /// </summary>
        /// <returns>Orders ID</returns>
		[OperationContract]
		string GetOrderObjectId(nwDAL.Order order);
        
		/// <summary>
        /// Read Order.
        /// </summary>
        /// <param name="entityId">Order Id that will be read.</param>
        /// <returns>Target Order.</returns>
        [OperationContract]
        nwDAL.Order ReadOrder(string entityId);

        /// <summary>
        /// Update Order.
        /// </summary>
        /// <param name="order">updated Order .</param>
        /// <returns>Updated Order Id .</returns>
        [OperationContract]
        string UpdateOrder(nwDAL.Order order);

        /// <summary>
        /// Delete Order.
        /// </summary>
        /// <param name="entityId">Target Order Id.</param>
        /// <returns>Deleted Order Id.</returns>
        [OperationContract]
        string DeleteOrderById(string entityId);
		
		/// <summary>
        /// Delete Order.
        /// </summary>
        /// <param name="entityId">Target Order.</param>
        /// <returns>Deleted Order.</returns>
        [OperationContract]
        string DeleteOrder(nwDAL.Order order);
		
		/// <summary>
        /// Searches the Order.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Order> SearchOrder(nwDAL.Order searchParameters);
        #endregion
		
        #region OrderDetails CRUD Operations

        /// <summary>
        /// Create OrderDetail . 
        /// </summary>
        /// <param name="OrderDetail">Target OrderDetail.</param>
        /// <returns>return OrderDetail Id </returns>
        [OperationContract]
        string CreateOrderDetail(nwDAL.OrderDetail orderdetail);

        /// <summary>
        /// Read OrderDetails.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of OrderDetails.</returns>
        [OperationContract]
        List<nwDAL.OrderDetail> ReadOrderDetails(int startIndex, int count);

		/// <summary>
        /// Reads OrderDetails.
        /// </summary>
        /// <returns>List of OrderDetails.</returns>
        [OperationContract]
        List<nwDAL.OrderDetail> ReadAllOrderDetails();
		
		/// <summary>
        /// Get OrderDetails ID.
        /// </summary>
        /// <returns>OrderDetails ID</returns>
		[OperationContract]
		string GetOrderDetailObjectId(nwDAL.OrderDetail orderdetail);
        
		/// <summary>
        /// Read OrderDetail.
        /// </summary>
        /// <param name="entityId">OrderDetail Id that will be read.</param>
        /// <returns>Target OrderDetail.</returns>
        [OperationContract]
        nwDAL.OrderDetail ReadOrderDetail(string entityId);

        /// <summary>
        /// Update OrderDetail.
        /// </summary>
        /// <param name="orderdetail">updated OrderDetail .</param>
        /// <returns>Updated OrderDetail Id .</returns>
        [OperationContract]
        string UpdateOrderDetail(nwDAL.OrderDetail orderdetail);

        /// <summary>
        /// Delete OrderDetail.
        /// </summary>
        /// <param name="entityId">Target OrderDetail Id.</param>
        /// <returns>Deleted OrderDetail Id.</returns>
        [OperationContract]
        string DeleteOrderDetailById(string entityId);
		
		/// <summary>
        /// Delete OrderDetail.
        /// </summary>
        /// <param name="entityId">Target OrderDetail.</param>
        /// <returns>Deleted OrderDetail.</returns>
        [OperationContract]
        string DeleteOrderDetail(nwDAL.OrderDetail orderdetail);
		
		/// <summary>
        /// Searches the OrderDetail.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.OrderDetail> SearchOrderDetail(nwDAL.OrderDetail searchParameters);
        #endregion
		
        #region Products CRUD Operations

        /// <summary>
        /// Create Product . 
        /// </summary>
        /// <param name="Product">Target Product.</param>
        /// <returns>return Product Id </returns>
        [OperationContract]
        string CreateProduct(nwDAL.Product product);

        /// <summary>
        /// Read Products.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Products.</returns>
        [OperationContract]
        List<nwDAL.Product> ReadProducts(int startIndex, int count);

		/// <summary>
        /// Reads Products.
        /// </summary>
        /// <returns>List of Products.</returns>
        [OperationContract]
        List<nwDAL.Product> ReadAllProducts();
		
		/// <summary>
        /// Get Products ID.
        /// </summary>
        /// <returns>Products ID</returns>
		[OperationContract]
		string GetProductObjectId(nwDAL.Product product);
        
		/// <summary>
        /// Read Product.
        /// </summary>
        /// <param name="entityId">Product Id that will be read.</param>
        /// <returns>Target Product.</returns>
        [OperationContract]
        nwDAL.Product ReadProduct(string entityId);

        /// <summary>
        /// Update Product.
        /// </summary>
        /// <param name="product">updated Product .</param>
        /// <returns>Updated Product Id .</returns>
        [OperationContract]
        string UpdateProduct(nwDAL.Product product);

        /// <summary>
        /// Delete Product.
        /// </summary>
        /// <param name="entityId">Target Product Id.</param>
        /// <returns>Deleted Product Id.</returns>
        [OperationContract]
        string DeleteProductById(string entityId);
		
		/// <summary>
        /// Delete Product.
        /// </summary>
        /// <param name="entityId">Target Product.</param>
        /// <returns>Deleted Product.</returns>
        [OperationContract]
        string DeleteProduct(nwDAL.Product product);
		
		/// <summary>
        /// Searches the Product.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Product> SearchProduct(nwDAL.Product searchParameters);
        #endregion
		
        #region Regions CRUD Operations

        /// <summary>
        /// Create Region . 
        /// </summary>
        /// <param name="Region">Target Region.</param>
        /// <returns>return Region Id </returns>
        [OperationContract]
        string CreateRegion(nwDAL.Region region);

        /// <summary>
        /// Read Regions.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Regions.</returns>
        [OperationContract]
        List<nwDAL.Region> ReadRegions(int startIndex, int count);

		/// <summary>
        /// Reads Regions.
        /// </summary>
        /// <returns>List of Regions.</returns>
        [OperationContract]
        List<nwDAL.Region> ReadAllRegions();
		
		/// <summary>
        /// Get Regions ID.
        /// </summary>
        /// <returns>Regions ID</returns>
		[OperationContract]
		string GetRegionObjectId(nwDAL.Region region);
        
		/// <summary>
        /// Read Region.
        /// </summary>
        /// <param name="entityId">Region Id that will be read.</param>
        /// <returns>Target Region.</returns>
        [OperationContract]
        nwDAL.Region ReadRegion(string entityId);

        /// <summary>
        /// Update Region.
        /// </summary>
        /// <param name="region">updated Region .</param>
        /// <returns>Updated Region Id .</returns>
        [OperationContract]
        string UpdateRegion(nwDAL.Region region);

        /// <summary>
        /// Delete Region.
        /// </summary>
        /// <param name="entityId">Target Region Id.</param>
        /// <returns>Deleted Region Id.</returns>
        [OperationContract]
        string DeleteRegionById(string entityId);
		
		/// <summary>
        /// Delete Region.
        /// </summary>
        /// <param name="entityId">Target Region.</param>
        /// <returns>Deleted Region.</returns>
        [OperationContract]
        string DeleteRegion(nwDAL.Region region);
		
		/// <summary>
        /// Searches the Region.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Region> SearchRegion(nwDAL.Region searchParameters);
        #endregion
		
        #region Shippers CRUD Operations

        /// <summary>
        /// Create Shipper . 
        /// </summary>
        /// <param name="Shipper">Target Shipper.</param>
        /// <returns>return Shipper Id </returns>
        [OperationContract]
        string CreateShipper(nwDAL.Shipper shipper);

        /// <summary>
        /// Read Shippers.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Shippers.</returns>
        [OperationContract]
        List<nwDAL.Shipper> ReadShippers(int startIndex, int count);

		/// <summary>
        /// Reads Shippers.
        /// </summary>
        /// <returns>List of Shippers.</returns>
        [OperationContract]
        List<nwDAL.Shipper> ReadAllShippers();
		
		/// <summary>
        /// Get Shippers ID.
        /// </summary>
        /// <returns>Shippers ID</returns>
		[OperationContract]
		string GetShipperObjectId(nwDAL.Shipper shipper);
        
		/// <summary>
        /// Read Shipper.
        /// </summary>
        /// <param name="entityId">Shipper Id that will be read.</param>
        /// <returns>Target Shipper.</returns>
        [OperationContract]
        nwDAL.Shipper ReadShipper(string entityId);

        /// <summary>
        /// Update Shipper.
        /// </summary>
        /// <param name="shipper">updated Shipper .</param>
        /// <returns>Updated Shipper Id .</returns>
        [OperationContract]
        string UpdateShipper(nwDAL.Shipper shipper);

        /// <summary>
        /// Delete Shipper.
        /// </summary>
        /// <param name="entityId">Target Shipper Id.</param>
        /// <returns>Deleted Shipper Id.</returns>
        [OperationContract]
        string DeleteShipperById(string entityId);
		
		/// <summary>
        /// Delete Shipper.
        /// </summary>
        /// <param name="entityId">Target Shipper.</param>
        /// <returns>Deleted Shipper.</returns>
        [OperationContract]
        string DeleteShipper(nwDAL.Shipper shipper);
		
		/// <summary>
        /// Searches the Shipper.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Shipper> SearchShipper(nwDAL.Shipper searchParameters);
        #endregion
		
        #region Suppliers CRUD Operations

        /// <summary>
        /// Create Supplier . 
        /// </summary>
        /// <param name="Supplier">Target Supplier.</param>
        /// <returns>return Supplier Id </returns>
        [OperationContract]
        string CreateSupplier(nwDAL.Supplier supplier);

        /// <summary>
        /// Read Suppliers.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Suppliers.</returns>
        [OperationContract]
        List<nwDAL.Supplier> ReadSuppliers(int startIndex, int count);

		/// <summary>
        /// Reads Suppliers.
        /// </summary>
        /// <returns>List of Suppliers.</returns>
        [OperationContract]
        List<nwDAL.Supplier> ReadAllSuppliers();
		
		/// <summary>
        /// Get Suppliers ID.
        /// </summary>
        /// <returns>Suppliers ID</returns>
		[OperationContract]
		string GetSupplierObjectId(nwDAL.Supplier supplier);
        
		/// <summary>
        /// Read Supplier.
        /// </summary>
        /// <param name="entityId">Supplier Id that will be read.</param>
        /// <returns>Target Supplier.</returns>
        [OperationContract]
        nwDAL.Supplier ReadSupplier(string entityId);

        /// <summary>
        /// Update Supplier.
        /// </summary>
        /// <param name="supplier">updated Supplier .</param>
        /// <returns>Updated Supplier Id .</returns>
        [OperationContract]
        string UpdateSupplier(nwDAL.Supplier supplier);

        /// <summary>
        /// Delete Supplier.
        /// </summary>
        /// <param name="entityId">Target Supplier Id.</param>
        /// <returns>Deleted Supplier Id.</returns>
        [OperationContract]
        string DeleteSupplierById(string entityId);
		
		/// <summary>
        /// Delete Supplier.
        /// </summary>
        /// <param name="entityId">Target Supplier.</param>
        /// <returns>Deleted Supplier.</returns>
        [OperationContract]
        string DeleteSupplier(nwDAL.Supplier supplier);
		
		/// <summary>
        /// Searches the Supplier.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Supplier> SearchSupplier(nwDAL.Supplier searchParameters);
        #endregion
		
        #region Territories CRUD Operations

        /// <summary>
        /// Create Territory . 
        /// </summary>
        /// <param name="Territory">Target Territory.</param>
        /// <returns>return Territory Id </returns>
        [OperationContract]
        string CreateTerritory(nwDAL.Territory territory);

        /// <summary>
        /// Read Territories.
        /// </summary>
        /// <param name="startIndex">Start Index.</param>
        /// <param name="count">Number of object that will be retreived.</param>
        /// <returns>List of Territories.</returns>
        [OperationContract]
        List<nwDAL.Territory> ReadTerritories(int startIndex, int count);

		/// <summary>
        /// Reads Territories.
        /// </summary>
        /// <returns>List of Territories.</returns>
        [OperationContract]
        List<nwDAL.Territory> ReadAllTerritories();
		
		/// <summary>
        /// Get Territories ID.
        /// </summary>
        /// <returns>Territories ID</returns>
		[OperationContract]
		string GetTerritoryObjectId(nwDAL.Territory territory);
        
		/// <summary>
        /// Read Territory.
        /// </summary>
        /// <param name="entityId">Territory Id that will be read.</param>
        /// <returns>Target Territory.</returns>
        [OperationContract]
        nwDAL.Territory ReadTerritory(string entityId);

        /// <summary>
        /// Update Territory.
        /// </summary>
        /// <param name="territory">updated Territory .</param>
        /// <returns>Updated Territory Id .</returns>
        [OperationContract]
        string UpdateTerritory(nwDAL.Territory territory);

        /// <summary>
        /// Delete Territory.
        /// </summary>
        /// <param name="entityId">Target Territory Id.</param>
        /// <returns>Deleted Territory Id.</returns>
        [OperationContract]
        string DeleteTerritoryById(string entityId);
		
		/// <summary>
        /// Delete Territory.
        /// </summary>
        /// <param name="entityId">Target Territory.</param>
        /// <returns>Deleted Territory.</returns>
        [OperationContract]
        string DeleteTerritory(nwDAL.Territory territory);
		
		/// <summary>
        /// Searches the Territory.
        /// </summary>
        /// <param name="searchParameters">The search parameters.</param>
        /// <returns></returns>
        [OperationContract]
        List<nwDAL.Territory> SearchTerritory(nwDAL.Territory searchParameters);
        #endregion
    }
}